2장. 고칠 방향 찾기 (미적분)
출처: 『AI 엔지니어링 선수지식』(youtubedu 자체 제작 학습노트) | 입문판 재구성 — 노트가 1차 소스(PDF 원본 없음)
코드는 분위기만 — torch·backward·import 같은 말은 몰라도 됩니다. '비유'와 '위험'만 봐도 충분해요.
AI 가 "배운다"는 건 지금 틀린 답을 조금씩 고쳐 정답에 가까워지는 일입니다.
그 "조금씩, 어느 쪽으로 고칠까"를 알려 주는 게 이 장의 주제입니다.
이 한 갈래가 신경망 학습의 심장입니다.
0. 이 장의 새 단어 (0장에 없는 말만 3개)
0장 용어집에 이미 있는 말(미분·그래디언트·경사하강법·학습률·손실)은 거기서 찾으면 됩니다.
여기서는 이 장에만 새로 나오는 말 3개만 미리 풀어 둡니다.
각 단어는 [한 문장 뜻 + 일상비유 + 한 줄 예] 3종입니다.
편미분(partial derivative)
한 문장 뜻 — 숫자가 여러 개일 때, 나머지는 잠깐 고정하고 하나만 골라 미분한 것.
일상비유 — 요리 간 보기. 소금만 한 꼬집 더 넣어 보고 맛이 어떻게 변하는지 보는 것. 이때 설탕·물은 그대로 둔다.
한 줄 예 —
# z = x² + y² 에서 x 만 미분 → 2x (y 는 잠깐 고정)
dz_dx = 2 * 1 # x=1 이면 2
체인룰(chain rule)
한 문장 뜻 — 함수 안에 함수가 들어 있을 때, 미분을 사슬처럼 곱해서 구하는 방법.
일상비유 — 도미노. A가 B를 밀고 B가 C를 밀면, A가 C에 준 영향은 두 영향을 곱한 값이다.
한 줄 예 —
# 바깥 미분 × 안쪽 미분 = 곱하기
total = 2 * 3 # 바깥 영향 2, 안쪽 영향 3 → 6
역전파(backpropagation)
한 문장 뜻 — 마지막에 난 오차를 신경망의 첫 층까지 거꾸로 전달하며 고칠 방향을 구하는 일. 그 정체가 체인룰 곱셈이다.
일상비유 — 책임 거슬러 묻기. 결과가 틀렸을 때 마지막 사람부터 거꾸로 "네가 얼마나 기여했냐"를 차례로 물어 가는 것.
한 줄 예 —
# 오차를 거꾸로 전달 — 프레임워크가 한 줄로 처리
loss.backward() # 첫 층까지 고칠 방향이 채워짐
(귀납 도입) 이런 적 있죠?
게임에서 라디오 주파수를 맞춘다고 해 봅시다.
다이얼을 돌리는데, 지금 소리가 지직거립니다. 틀렸어요.
문제는 다이얼을 왼쪽으로 돌려야 깨끗해질지, 오른쪽으로 돌려야 깨끗해질지 모른다는 겁니다.
마구잡이로 돌리면 더 지직거리기도 합니다.
AI 도 똑같은 처지입니다.
답이 틀렸는데, 내부 숫자(가중치)를 올려야 덜 틀릴지 내려야 덜 틀릴지 모릅니다.
그걸 찍어서 알려 주는 게 바로 미분입니다.
"이 숫자를 살짝 올리면 손실이 늘까 줄까"를 계산으로 알려 줍니다.
그게 이 장 전체의 핵심입니다.
이 장에서 딱 4가지만 (TL;DR)
이 장에서 딱 4가지만
- 미분 — 숫자 하나를 살짝 바꾸면 결과가 어느 쪽으로 변하는지(기울기).
- 편미분·그래디언트 — 숫자가 여러 개면 하나씩 따로 본 뒤(편미분), 그 방향들을 한 화살표로 모은 것(그래디언트).
- 체인룰 — 함수 속 함수의 미분은 곱하기. 이게 역전파의 정체.
- 경사하강법 — 그 화살표 반대로 한 걸음씩 내려가 골짜기(정답)에 닿는 실제 학습법.
한 줄 요약 — AI 학습은 틀린 정도를 미분해서, 곱해서 끝까지 전달하고, 한 걸음씩 고치는 반복입니다.
개념 1 — 미분: 살짝 바꾸면 결과가 어디로?
막히는 장면
자동차를 1시간에 60km 몰았습니다.
평균 속도는 60입니다. 그런데 "지금 이 순간" 속도는 얼마일까요?
평균만으로는 모릅니다. 지금 가속 중일 수도, 멈추는 중일 수도 있으니까요.
지금 이 순간의 변화 속도, 그게 미분입니다.
일상비유 (먼저, 크게)
비유 1 — 속도계 바늘.
1시간 평균이 아니라, 지금 이 순간 속도계 바늘이 가리키는 값이 미분입니다.
비유 2 — 등산로 경사.
지금 발 밑이 가파르면 미분이 크고, 평평하면 미분이 0입니다.
| 비유 | 코드 | 위험 |
|---|---|---|
| 지금 이 순간 속도 | slope = 2 * 3 # 6 |
평균과 헷갈리면 방향을 못 잡음 |
| 발 밑 경사 | (f(x+h) - f(x)) / h |
기울기 0(평지)이면 어디로 갈지 못 정함 |
한 문장 정의 — 미분은 어떤 값을 아주 조금 바꿨을 때 결과가 얼마나, 어느 쪽으로 변하는지를 나타내는 기울기입니다.
예시 폭격
(1) 완성 예 — y = x² 의 미분은 2x 입니다.
규칙은 간단해요. 지수(2)를 앞으로 내리고, 지수는 1 줄입니다.
x=3 이면 2 × 3 = 6 입니다.
뜻은 "x=3 근처에서 x를 1 늘리면 y는 약 6 늘어난다"입니다.
def f(x): return x**2
x, h = 3.0, 1e-5
print(round((f(x+h) - f(x)) / h, 2)) # 6.0
(2) 부분 완성 — y = x² 에서 x=5 일 때 미분 값은?
빈칸을 채워 보세요. 2 × _ = _.
(답: 2 × 5 = 10)
(3) 독립 적용 — 발 밑 경사가 0 이라는 건 무슨 뜻일까요?
지금 자리가 평지(골짜기 바닥일 수도)라서, 어느 쪽으로도 더 내려갈 곳이 안 보인다는 뜻입니다.
(4) 한 번 더 — y = x³ 의 미분은 3x² 입니다.
지수 3을 앞으로, 지수는 1 줄여 2.
x=2 면 3 × 2² = 12 입니다.
미니 시나리오 — 이럴 때 이렇게.
모델이 틀렸는데 가중치를 올릴지 내릴지 모를 때 → 그 가중치로 손실을 미분합니다.
미분 값이 양수면 "올리면 손실이 는다"는 뜻이니, 내립니다.
값이 +6 이면 내리고, −6 이면 올립니다. 부호가 방향을 알려 줍니다.
개념 2 — 편미분·그래디언트: 손잡이가 여러 개일 때
막히는 장면
이번엔 다이얼이 하나가 아니라 두 개, 아니 수천억 개입니다.
소금 다이얼, 설탕 다이얼, 물 다이얼… 동시에 다 돌리면 뭐가 맛을 바꿨는지 알 수 없습니다.
그래서 하나만 살짝 돌려 보고, 나머지는 잠깐 고정합니다.
그게 편미분입니다.
일상비유 (먼저, 크게)
비유 1 — 간 보기.
소금만 한 꼬집 더 넣어 본다. 설탕·물은 그대로. 맛 변화를 본다. 이게 "소금에 대한 편미분".
비유 2 — 등산 지도 화살표.
각 방향으로 따로 잰 경사를 한데 모으면, "가장 가파른 오르막 방향" 화살표가 나옵니다.
이 화살표가 그래디언트입니다. 반대로 가면 골짜기(정답)로 가장 빨리 내려갑니다.
| 비유 | 코드 | 위험 |
|---|---|---|
| 소금만 따로 간 보기 | dz_dx = 2 * x # x 만 |
다 한꺼번에 바꾸면 원인을 못 가림 |
| 가파른 방향 화살표 | grad = [2*x, 2*y] |
그래디언트가 폭발·소실하면 학습이 멈춤 |
한 문장 정의 — 편미분은 여러 숫자 중 하나만 골라 미분한 것이고, 그것들을 다 모은 화살표가 그래디언트입니다.
예시 폭격
(1) 완성 예 — z = x² + y² 의 그래디언트는 [2x, 2y] 입니다.
x 에 대해선 2x, y 에 대해선 2y. 두 편미분을 묶으면 화살표 하나가 됩니다.
(x=1, y=2) 면 [2, 4] 입니다.
import torch
x = torch.tensor(1.0, requires_grad=True)
y = torch.tensor(2.0, requires_grad=True)
(x**2 + y**2).backward()
print(x.grad, y.grad) # tensor(2.) tensor(4.)
(2) 부분 완성 — (x=3, y=0) 이면 그래디언트는?
빈칸을 채워 보세요. [2 × _, 2 × _] = [_, _].
(답: [6, 0])
(3) 독립 적용 — 그래디언트가 [0, 0] 이면 지금 어디 있는 걸까요?
모든 방향으로 경사가 0이니, 골짜기 바닥(또는 평지)에 도착했다는 신호입니다.
(4) 한 번 더 — z = x² + y² 에서 (x=0, y=3) 이면 그래디언트는 [0, 6] 입니다.
x 쪽은 평지(0), y 쪽만 가파릅니다(6). y 만 줄이면 됩니다.
미니 시나리오 — 이럴 때 이렇게.
"학습이 안 된다"는 말이 나오면 → 가장 먼저 그래디언트를 의심합니다.
값이 0에 가깝게 사라졌거나(소실), 너무 커졌으면(폭발) 학습이 멈춥니다.
개념 3 — 체인룰: 함수 속 함수는 곱하기
막히는 장면
신경망은 층이 수십 개 겹쳐 있습니다.
1층의 출력이 2층의 입력이 되고, 2층의 출력이 3층의 입력이 됩니다.
함수 안에 함수가 들어 있는 거죠. 이런 걸 어떻게 한꺼번에 미분할까요?
손으로 풀어 쓰면 끝이 없습니다.
여기서 체인룰이 등장합니다. 그냥 곱하면 됩니다.
일상비유 (먼저, 크게)
비유 1 — 도미노.
A가 B를 밀고, B가 C를 민다. "A가 C에 준 영향"은 (A→B 영향) × (B→C 영향)입니다. 곱하기.
비유 2 — 환율 두 번 거치기.
원 → 달러 → 엔. 원이 엔에 주는 영향은 두 환율을 곱한 값입니다. 미분도 똑같이 곱합니다.
| 비유 | 코드 | 위험 |
|---|---|---|
| 도미노 (영향 곱하기) | total = 2 * 3 # 6 |
한 곳에서 곱셈을 빠뜨리면 방향 전체가 틀어짐 |
| 환율 두 번 거치기 | y.backward() |
층이 깊으면 곱이 쌓여 0이나 무한대로 튐 |
한 문장 정의 — 체인룰은 함수 속 함수(합성함수)의 미분을, 바깥 미분과 안쪽 미분을 곱해서 구하는 방법입니다.
예시 폭격
(1) 완성 예 — y = (3x+1)² 의 미분.
바깥(제곱)을 미분하면 2(3x+1), 안쪽(3x+1)을 미분하면 3.
둘을 곱하면 6(3x+1) 입니다.
x=2 면 6 × (3×2+1) = 6 × 7 = 42.
import torch
x = torch.tensor(2.0, requires_grad=True)
y = (3*x + 1)**2
y.backward()
print(x.grad) # tensor(42.)
(2) 부분 완성 — y = (2x)² 의 미분은?
바깥 미분 2(2x) 과 안쪽 미분 2 를 곱하세요. 2(2x) × 2 = _.
(답: 8x)
(3) 독립 적용 — 역전파가 곧 체인룰이라는 말은 무슨 뜻일까요?
마지막 층의 오차를 첫 층까지 거꾸로 전달할 때, 층마다 영향을 곱해 가며 거슬러 올라간다는 뜻입니다.
미니 시나리오 — 이럴 때 이렇게.
층이 수십 개라 미분이 막막할 때 → 체인룰로 층마다 영향을 곱해 거꾸로 전달합니다.
이 거꾸로 전달이 바로 역전파입니다. 프레임워크가 backward() 한 줄로 처리해 줍니다.
개념 4 — 경사하강법: 안개 속에서 한 걸음씩
막히는 장면
고칠 방향(그래디언트)은 알았습니다.
그런데 한 번에 정답으로 점프할 수는 없습니다.
너무 크게 움직이면 골짜기를 건너뛰어 반대편 언덕으로 튕겨 나갑니다.
너무 작게 움직이면 평생 골짜기에 못 닿습니다.
그래서 적당한 보폭으로 한 걸음씩, 수없이 반복합니다.
일상비유 (먼저, 크게)
비유 1 — 안개 속 하산.
앞이 하나도 안 보여도, 발 밑 경사만 느끼며 가장 가파른 내리막으로 한 걸음.
다시 경사 재고 또 한 걸음. 반복하면 결국 골짜기에 닿습니다.
비유 2 — 보폭이 학습률.
보폭이 너무 크면 골짜기를 폴짝 건너뛰고, 너무 작으면 해 지도록 못 내려갑니다.
| 비유 | 코드 | 위험 |
|---|---|---|
| 한 걸음씩 하산 | x = x - lr * grad |
한 번에 못 감 — 반복이 곧 학습 |
| 보폭 = 학습률 | lr = 0.1 |
너무 크면 건너뛰고, 너무 작으면 안 도착 |
한 문장 정의 — 경사하강법은 그래디언트 반대 방향으로 학습률만큼 한 걸음씩 반복해 손실의 골짜기로 내려가는 실제 학습 알고리즘입니다.
예시 폭격
(1) 완성 예 — f(x)=x², 지금 x=3, 학습률 0.1.
기울기는 2×3 = 6. 새 위치는 3 − 0.1×6 = 2.4.
한 걸음 골짜기(0) 쪽으로 갔습니다. 이걸 반복하면 x 는 0에 수렴합니다.
x, lr = 3.0, 0.1
for _ in range(20):
x = x - lr * (2*x)
print(round(x, 3)) # 0.026 (거의 0)
(2) 부분 완성 — x=2, 학습률 0.1 이면 다음 위치는?
기울기 2×2 = 4. 새 위치 2 − 0.1×_ = _.
(답: 2 − 0.1×4 = 1.6)
(3) 독립 적용 — 학습률을 10으로 키우면 무슨 일이 날까요?
보폭이 너무 커서 골짜기를 건너뛰고, 위치가 오히려 더 멀어지며 학습이 발산합니다.
미니 시나리오 — 이럴 때 이렇게.
손실이 줄다가 갑자기 폭주하면 → 학습률이 너무 큰 게 첫 의심입니다.
학습률을 더 작게 낮춰 다시 돌립니다. 이 보폭 맞추기가 AI 엔지니어의 일상입니다.
정리 — 단순 규칙 하나로
| 개념 | 한 일 | LLM 에서의 역할 |
|---|---|---|
| 미분 | 살짝 바꾸면 결과가 어디로? | 가중치를 어느 쪽으로 고칠지 |
| 그래디언트 | 방향들을 한 화살표로 | 모든 가중치의 고칠 방향 묶음 |
| 체인룰 | 영향을 곱해 거꾸로 | 역전파 (깊은 층까지 오차 전달) |
| 경사하강 | 반대로 한 걸음씩 | 실제 학습 (한 step) |
단순 규칙 — 틀린 정도를 미분(그래디언트)해서, 체인룰로 끝까지 곱해 전달하고, 경사하강으로 한 걸음씩 고친다. 이 반복이 AI 학습 전부입니다.
한 걸음 더 ▸ (지금 몰라도 됨)
실제로는 데이터를 작게 쪼개 한 걸음씩 가는 변형(SGD)이나, 보폭을 똑똑하게 자동 조절하는 변형(Adam) 같은 도구를 씁니다.
이름은 달라도 속은 전부 "경사하강의 변형"입니다. 지금은 "방향 찾고 한 걸음씩" 이 한 줄만 들고 가면 됩니다.
참고 자료 (흥미용, 지금 몰라도 됨)
다음 장 예고
다음 장에서는 또 한 갈래, 확률 이야기를 천천히 풉니다.
AI 가 "다음 단어는 80% 확률로 이거" 라고 어떻게 찍는지를 봅니다.
지금은 "방향 찾고 한 걸음씩" 이 한 줄만 머리에 있으면 충분합니다. 나머지는 다음 장에서 풀려요.
클릭하거나 Space를 눌러 뒤집기